package MapTest;

import java.util.*;

/*
Map中常用的方法:
    1.Map和Collection没有继承关系
    2.Map集合以key和value的方式存储数据:键值对
        key和value都是引用数据类型
        key和value都是存储对象的内存地址
        key起到主导的地位，value是key的一个附属品
    3.常用方法:
        V put(K key, v value) 向Map集合中添加键值对
        V get(Object key) 通过key获取value
        void clear() 清空Map集合
        boolean containsKey(Object key) 判断Map中是否包含某个key
        boolean containsValue(Object value) 判断Map中是否包含某个value
        boolean isEmpty() 判断Map集合中元素个数是否为0
        Set<K> keySet() 获取Map集合所有的key
        V remove(Object key) 根据key删除Map集合中的数据
        int size() 获取Map集合中有几个元素
        Collection<V> values() 获取Map集合中所有的value，返回一个Collection
        Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合 (1=张三)
 */
public class MapTest1 {
    public static void main(String[] args){
        Map<Integer,String> m1 = new HashMap<>();
        m1.put(1,"java");
        m1.put(2,"c++");
        m1.put(3,"php");
        m1.put(4,"python");
        //通过key获取value
        String s = m1.get(1);
        System.out.println(s);
        //判断Map中是否包含某个key
        System.out.println(m1.containsKey(3)); //true
        //判断Map中是否包含某个value
        System.out.println(m1.containsValue("c++")); //true
        //清空集合
        m1.clear();
        //判断Map集合中元素个数是否为0
        System.out.println(m1.isEmpty()); //true

        m1.put(1,"java");
        m1.put(2,"c++");
        m1.put(3,"php");
        m1.put(4,"python");
        //根据key删除Map集合中的数据
        m1.remove(3);
        //将Map集合转换成Set集合，遍历
        Set<Map.Entry<Integer,String>> h = m1.entrySet();
        Iterator<Map.Entry<Integer,String>> i = h.iterator();
        while(i.hasNext()){
            Map.Entry<Integer,String> m =  i.next();
            Integer key = m.getKey();
            String value = m.getValue();
            System.out.println(key+"="+value);
        }
        //获取Map集合所有的key,遍历
        Set<Integer> s1 = m1.keySet();
        Iterator i1 = s1.iterator();
        while(i1.hasNext()){
            Object o =i1.next();
            System.out.println(o);
        }
        //获取Map集合中有几个元素
        System.out.println(m1.size()); //3
        //获取Map集合中所有的value，返回一个Collection
        Collection<String> c = m1.values();
        for(String st : c){
            System.out.println(st);
        }
        System.out.println("===============");
        //对Map集合的遍历 取出key，通过key来获取value来实现遍历
        Set<Integer> set = m1.keySet(); //将map集合中的key值转化成set集合
        Iterator<Integer> it1 =  set.iterator();
        while(it1.hasNext()){
            Integer i2 = it1.next();
            System.out.println(i2+"=>"+m1.get(i2));
        }

        for(Integer i3 : set ){
            System.out.println(i3+"<=>"+m1.get(i3));
        }
    }
}